#include<stdlib.h>
#include<stdio.h>
#include<string.h>
#include<stdint.h>

uint32_t uint2float(uint32_t u){

    //如果是32位的0，那么就原路返回
    if (u==0)
    {
        return 0;
    }
    
    //去除u的最高位（即符号位）
    uint32_t s = u & 0x80000000;
    u = u & 0x7fffffff;//此时的u已经没有符号位了 u does not have a sign bit


    //如果不全是0，那么必须有1，那么此时需要找出最高位的1的位置
    //找出有多少个前导0
    int n = 0;
    for (int i = 0;i<31 ;++i ) {

        if ((u>>i)==0x1){//最终是变成0x 00000000、00000000、00000000、00000001，就能找到最高位的1所在的位置
            n = i;
            break;
        }  
    }

    printf("n=%d\n", n);

    if (n-1<=23)
    {
        //不近似 no near
        uint32_t f;
        uint32_t e;
        s = (u >> 31) & 0x1;
        f = u & (0xffffffff >> (32 - n));
        e = n + 126;

    }else{
        //近似 should near

    }

    return 0;
}

int main(){

    uint32_t u = 0x0008000;
    uint2float(u);
    return 0;
}